# 存储一维DG方法的参数和问题设置
import numpy as np 

# 定义参数
Nx = 256  # 单元数
k = 2  # 分片多项式空间P_k的次数 目前只支持k = 2的情况
NumGLP = 5  # Gauss点的个数
dimPk = k + 1  # 分片多项式空间的维数
CFL = 0.2  # CFL数
M = 1  # TVD限制器参数 M->0时为TVD限制器，M->∞时无限制器

# 问题设置
# def u0(x):
#     """初始条件"""
#     return np.sin(x)

# 方波
# def u0(x):
#     """初始条件"""
#     if np.pi/2 <= x <= 3*np.pi/2:
#         return 1.0
#     else:
#         return 0.0

xa = 0.0  # 区间左端点
xb = 2 * np.pi # 区间右端点
bcL = 1  # 左边界条件类型 1:周期 2:Dirichlet 3:Neumann
bcR = 1  # 右边界条件类型 1:周期 2:Dirichlet 3:Neumann
t_end = 2 * np.pi  # 终止时间

hx = (xb - xa) / Nx  # 网格步长
hx1 = 0.5 * hx
Xc = xa + (np.arange(Nx) + 0.5) * hx  # 单元中心坐标

# burgers方程激波算例
# def u0(x):
#     if  0 <= x <= 2:
#         return 0
#     else:
#         return 1
    
def u0(x):
    if 0.5 * np.pi < x < 1.5 * np.pi:
        return 1
    else: 
        return 0

# def u0(x):
#     return np.sin(x)


def true_u(x):
    # t_end = 2pi
    # return np.sin(x - np.pi * 2)
    return u0((x - 2 * np.pi) % (2 * np.pi))


